﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

//IMPORTAMOS 
using EventSys.BussinesEntities;
using EventSys.BussinesLogic;
using Microsoft.Practices.Unity;
using System.IO; // para usar el "Path"
using System.Drawing; // para usar el valor image

namespace EventSys.MVC4Web.Controllers
{
    
    public class AuspiciadorController : Controller
    {

        [Dependency]
        public IAuspiciadorService auspiciadorService { get; set; }
        //
        // GET: /Auspiciador/

        public ActionResult Index()
        {
            var listaAuspicador = auspiciadorService.GetFromAllAuspiciadorByCriterioAndTipoAuspiciador("", "Jurídico");
            return View(listaAuspicador);
            //return View();
        }

        //[HttpPost]
        //public ActionResult Index(string criterio)
        //{
        //    var buscarProducto = auspiciadorService.GetFromAllAuspiciadorByCriterio(criterio);

        //    return View(buscarProducto);
        //}

        [HttpPost]
        public ActionResult Index(string criterio, string tipo)
        {
            var buscarProducto = auspiciadorService.GetFromAllAuspiciadorByCriterioAndTipoAuspiciador(criterio, tipo);

            return View(buscarProducto);
        }
        
        // GET: /AUSPICIADOR JURIDICO/

        public ActionResult tabJuridico()
        {
            //var listaAuspicador = auspiciadorService.GetFromAllAuspiciadorByCriterioAndTipoAuspiciador("","Jurídico");
            return View();
        }

        [HttpPost]
        public ActionResult tabJuridico(string criterio)
        {
            var listaAuspicador = auspiciadorService.GetFromAllAuspiciadorByCriterioAndTipoAuspiciador(criterio, "Jurídico");

            return View(listaAuspicador);
        }

        // GET: /AUSPICIADOR NATURAL/

        public ActionResult tabNatural()
        {
            var listaAuspicador = auspiciadorService.GetFromAllAuspiciadorByCriterioAndTipoAuspiciador("", "Natural");
            return View(listaAuspicador);
        }

        [HttpPost]
        public ActionResult tabNatural(string criterio)
        {
            var listaAuspicador = auspiciadorService.GetFromAllAuspiciadorByCriterioAndTipoAuspiciador(criterio, "Natural");

            return View(listaAuspicador);
        }

        //
        // GET: /Auspiciador/Details/5

        public ActionResult Details(Int32 id)
        {
            var auspiciador = auspiciadorService.AuspiciadorById(id);

            return PartialView("_Details", auspiciador);
        }

        //
        // GET: /Auspiciador/Create

        public ActionResult Create()
        {

            return View();
        }

        //
        // POST: /Auspiciador/Create

        [HttpPost]
        public ActionResult Create(Auspiciador collection, HttpPostedFileBase image)
        {
            try
            {
                // TODO: Add insert logic here
                //if (image != null)
                //{
                    collection.ImageMimeType = image.ContentType;
                    int length = image.ContentLength;
                    byte[] buffer = new byte[length];
                    image.InputStream.Read(buffer, 0, length);

                    collection.Logo = buffer;

                    auspiciadorService.RegistrarAuspiciador(collection);

                    return RedirectToAction("Index");
                //}
            }
            catch (Exception ex)
            {
                ViewData["message"] = ex.Message;
                return View(collection);
            }
            return RedirectToAction("Index");

        }


        //
        // GET: /Auspiciador/Edit/5

        public ActionResult Edit(int id)
        {
            var ausipiciador = auspiciadorService.AuspiciadorById(id);
            return View(ausipiciador);
        }

        //
        // POST: /Auspiciador/Edit/5

        [HttpPost]
        public ActionResult Edit(Auspiciador collection, HttpPostedFileBase image)
        {
            try
            {
                // TODO: Add insert logic here
                if (image != null)
                {
                    collection.ImageMimeType = image.ContentType;
                    int length = image.ContentLength;
                    byte[] buffer = new byte[length];
                    image.InputStream.Read(buffer, 0, length);

                    collection.Logo = buffer;

                    auspiciadorService.EditarAuspiciador(collection);

                    return RedirectToAction("Index");
                }
                //else { 
                //    auspiciadorService.EditarAuspiciador(collection);

                //    return RedirectToAction("Index");
                //}
            }
            catch (Exception ex)
            {
                ViewData["message"] = ex.Message;
                return View(collection);
            }
            return RedirectToAction("Index");
        }

        //
        // GET: /Auspiciador/Delete/5

        public ActionResult Delete(int id)
        {
            auspiciadorService.EliminarAuspiciador(id);
            return RedirectToAction("index");
        }

        //
        // POST: /Auspiciador/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }



        public JsonResult GetAuspiciador()
        {
            //var lista = auspiciadorService.GetFromAllAuspiciadores();

            var query = from a in auspiciadorService.GetFromAllAuspiciadores()
                        //select a;
                        select new { Marca = a.idAuspiciador + " - " + a.Marca + " - " + a.RazonSocial, Value = a.idAuspiciador };

            return Json(query, JsonRequestBehavior.AllowGet);
        }



        // *****************   IMGEN    ******************

        // para leer la imagen d la base d datos
        public FileContentResult GetImage(Int32 id)
        {
            var participante = auspiciadorService.AuspiciadorById(id);

            if (participante != null)
            {

                string type = string.Empty;
                if (!string.IsNullOrEmpty(participante.ImageMimeType))
                {
                    type = participante.ImageMimeType;
                }
                else
                {
                    type = "image/jpeg";
                }

                return File(participante.Logo, type);
            }
            else
            {
                return null;
            }
        }

        public byte[] imageToByteArray(Image imageIn)
        {
            MemoryStream ms = new MemoryStream();
            imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            return ms.ToArray();
        }

        public Image byteArrayToImage(byte[] byteArrayIn)
        {
            MemoryStream ms = new MemoryStream(byteArrayIn);
            Image returnImage = Image.FromStream(ms);
            return returnImage;
        }



        /// ///////  para validar el DNI  /////
        public ActionResult validarDni(string dni)
        {
            var list = auspiciadorService.GetFromAllAuspiciadores().ToList();

            var rpt = new { existe = false, };

            try
            {
                var query = from a in list select a.RucDni;

                foreach (var item in query)
                {
                    if (item == dni)
                    {
                        rpt = new { existe = true, };
                    }
                }
                return Json(rpt, JsonRequestBehavior.AllowGet);//nos permite enviar el mensaje
            }
            catch (SystemException) { }

            return Json(rpt, JsonRequestBehavior.AllowGet);
        }


        ///// ///////  para validar el Codigo UPN  /////
        //public ActionResult validarRUC(string cod)
        //{
        //    var list = auspiciadorService.GetFromAllAuspiciadores().ToList();

        //    var rpt = new { existe = false, };

        //    try
        //    {
        //        var query = from p in list select p.CodigoUpn;

        //        foreach (var item in query)
        //        {
        //            if (item == cod)
        //            {
        //                rpt = new { existe = true, };
        //            }
        //        }
        //        return Json(rpt, JsonRequestBehavior.AllowGet);//nos permite enviar el mensaje
        //    }
        //    catch (SystemException) { }

        //    return Json(rpt, JsonRequestBehavior.AllowGet);
        //}

    }
}
